package lsl.Git.本地仓库;

public class C05冲突的解决 {
}
/*
	5.1)冲突的概念
        现象演示:
            开发人员A 开发需求1,开发了一个工具类 MathUtil,里面第一行写了一个方法 add(int [] args)
            同时开发人员B 开发需求2,开发了一个工具类 MathUtil,里面第一行写了一个方法 add(int a int b)
            他们在互相不知道对方需求的情况下同时提交了代码到自己的分支
               思考此时如果我们把需求1 和需求2 同时都合并到主分支上, 主分支的 工具类 MathUtil 的第一行应该使用谁的代码?
               此时主分支是不能智能判断第一行使用谁的代码,合并时会报错,我们叫做冲突.



	5.2) 如何处理冲突:
        分析一下冲突的原因:
            开发人员之间彼此没有沟通导致的同一个时间节点修改了同一个地方的代码,合并是冲突
        思考:
            我们能直接把某个开发人员开发的代码删除吗?
        显然不能
            所以在处理冲突时,第一步应该时找开发另一个需求的人员沟通,之后才是处理冲突
            /协商之后再修改即可




        指令我们基本学完了
            /现在来学习一下冲突问题


        什么是冲突:
            /当两个分支上对文件的修改可能会存在冲突人家知道用谁的版本?:
                如同时修改了同一个文件的同一行,这时就要手动的解决冲突
                解决冲突的步骤如下:
                    1.处理文件冲突的地方
                    2.将解决完冲突的文件加入暂存区(add)
                    3.提交到仓库中


       实战:
           /现在你的dev01可以直接删除了,因为东西我们都合并到master上了
           /我们新建一个分支,是dev来一个文件,修改内容conut=2,提交
           /切回master分支,在修改为count=3,提交仓库
           /这时我master分支去合并dev分支的时候就会出现冲突,人家直接把信息合在一起了
            /人家会把你的文件改为,下面并且提示合并失败
            <<<<<<<<<<<HEAD
            count=3
            ===============
            count=2
            >>>>>>>>>>>dev

                /这时Git就是让我们手动的解决冲突,你直接改为你的就行了
                    /我们改为count=5
                    /这时在提交到仓库即可,这时就完成了合并
                    /或者你保留一个你想要的



        开发中分支使用原则与流程:
            /几乎所有的版本控制系统都以某种形式支持分支,使用分支意味着你可以把你的工作从主线上分离开来
                /进行重大Bug修改,开发新的功能,以免影响开发主线:
                /不能像我们一样起名,dev01 dev02这样瞎jb起名字

                在开发者,一般有如下分支使用原则与流程:
                   1.master(生产)分支:
                        /线上分支,主分支,中小规模项目作为线上运行的应用对应的分支
                            /其他分支上的不能上线的
                                /一般这里的都是稳定的版本


                   2.develop(开发)分支:
                        /是从master创建的分支,一般作为开发不能的主要开发分支,如果没有其他并行开发不同期上线要求
                        /都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支上,准备上线
                            /不直接在develop分支上开发,而是开发的全部代码提交到这里
                                /这个合并的差不多了我们在合并到master上,作为上线的新版本


                   3.feature/xxx分支
                        /从develop创建的分支,一般是同期并行开发,但是不同期上线时创建的分支,分支上的研发任务完成后
                        /合并到develop分支
                            /这个分支提交到develop后,这个分支就可以删除了,但是有两个分支是不能删除的,就是develop和master分支


                   4.hot/xxx分支
                        /从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master,test,develop分支
                            /你能直接修mater吗??
                            /你修改的bug要合并到master上,去而且还要合并到develop上,修好,下一个版本就没有这个问题了


                   5.还有一些其他分支,在此不在相熟,如test分支(用于代码测试),pre分支(预上线分支)等等



            使用-D的情况一般就是你删除的这个分支,还有内容没有合并到,另一个分支上的话,这时就不让你删除拍你误删除



      我们这里扩展一下:
        /快进模式:
            /我们在合并的时候,在图形化展示的时候,我们会看到这样的图形:
                我我们有两个分支,1分支和2分支,1分支就是在二分支的基础上,新建了一个文件
                    /这时你在进行合并的时候
                    /就会显示ef38e16 (HEAD -> master, dev01) 第二次提交
                        /这样并列的情况,这个就是Git的快进模式

                    如果两个分支都是不同的
                        /1分支也修改2分支也修改,这时人家就没办法合并了
                            /只能出现像之前的拱桥形状
                            如:
                            $ git-log
                            *   5dea062 (HEAD -> master) Merge branch 'dev01'
                            |\
                            | * 334f41d (dev01) file02提交了
                            * | 8c48ba9 add ignore file
                            |/
                            * ef38e16 第二次提交
                            * f9dbaea

                        在git命令行中,鼠标框柱就是复制了,直接鼠标中间,就可以完成粘贴还是非常的方便的
 */
